#! /usr/bin/env python
from http import client
import rospy
from plumbing_server_client.srv import AddInts,AddIntsRequest,AddIntsResponse
import sys


"""
    客户端:组织并提交请求，处理响应
        
        1.导包
        2.初始化ros节点
        3.创建客户端对象
        4.组织请求数据，并发布请求
        5.处理响应

    优化实现:
        可以在优化节点时，动态传入参数

    问题:
        客户端先于服务端启动会抛异常
    需求:
        客户端先于服务端启动，不要抛出异常而是挂起，等待服务端启动后再次发送请求
    实现:
        ROS中内置了相关函数，可判断服务端状态，如果未启动，则让客户端挂起

        方案一:client.wait_for_service()
        方案二:rospy.wait_for_service("话题名称")
"""


if __name__ == "__main__":

    # 判断参数长度(个数)
    if len(sys.argv) != 3:
        rospy.logerr("传入参数数量有误")
        sys.exit(1)

    # 2.初始化ros节点
    rospy.init_node("erHei")
    # 3.创建客户端对象
    client = rospy.ServiceProxy("addInts",AddInts)
    rospy.loginfo("客户端对象创建")
    # 4.组织请求数据，并发布请求
    # 解析传入参数 索引0为文件路径及文件名 即传入的第一个参数
    num1 = int(sys.argv[1])
    num2 = int(sys.argv[2])
    # 等待服务启动
    # 1
    # client.wait_for_service()
    # 2
    rospy.wait_for_service("addInts")

    response = client.call(num1,num2)
    # 5.处理响应
    rospy.loginfo("响应的数据:%d",response.sum)